1. Field of the Invention
The present invention relates generally to computer systems, and more specifically to multiple concurrent subprocess handling on systems employing global processes using a communications protocol that does not require data serialization or deserialization.
2. Related Art
To understand the present invention, one must first understand the relationship between a global process and its subprocesses. Consider the case where a global process is accessed by a variety of client or user processes. When the global process needs to analyze user-specific data for a variety of such users, it does so by way of a subprocess. In a concurrent subprocess system, many subprocesses of a single global process are simultaneously active.
Locales in a Unix environment provide a practical example of global processes and subprocesses. A locale defines a set of language conventions relative to language territory and code set combinations. These conventions include information on character classification, case conversion, date and time representation, monetary symbols, and numeric representations. One can think of locales, as including all the information necessary to communicate relay information in a given language. Thus, one sometimes speaks of locales in terms of region or language, such as a Dutch locale or a Japanese locale.
ANSI-C is a version of the C programming language that adheres to standards set forth by the American National Standards Institute. The Portable Operating System Interface for Unix (POSIX) is a standard that defines operating system devices. A common conglomeration of these standards is known as the ANSI-C/POSIX standard. This standard utilizes a global locale environment. What this means is that each process or task is bounded to a single global locale.
A system having a global locale environment is illustrated in FIG. 1, which illustrates a server system 100. The system 100 includes a central processing unit 102; a primary memory 104, such as a random access memory, for program execution; and a secondary memory 106, such as a disk, for storing programs and data that are not immediately needed for execution. Contained within memories 104, 106 are an operating system 108 that utilizes a global locale. Also pictured is the kernel 110, which is the core of the operating system 108.
The kernel 110 has a single process for each differing locale, 150, 152, 154, and a single process for each differing user or client, even if that client utilizes the same locale 156, 158, 160. These single processes 150, 152, 154, 156, 158, 160 are created regardless of the amount of processing functionality they share. That is, the processes' instructions could be 90% locale-independent and largely functionally similar to each of the other processes. Nevertheless, these separate processes must be created under a global locale standard, such as ANSI-C/POSIX. Unfortunately, each such process consumes precious computing resources: memory, which is directly consumed, and processing power, which is indirectly consumed when many processes occupy substantial amounts of memory.
In contexts such as this and others, past techniques have attempted to serve concurrent subprocesses using a variety of communication techniques, such as remote procedure calls and remote method invocations. These methods are limited, however, because they require the serialization and de-serialization of all data, including pointers used between the processes and subprocesses. This is costly in terms of processing time. The present invention provides a better way.